1. Field of the Invention
This invention relates in general to storage devices in a networked computer system. More particularly, this invention relates to a system and method for selectively presenting logical storage units to multiple host operating systems.
2. Background
In computing systems, mass storage systems often contain a plurality of storage devices arranged in various configurations to provide improved data reliability. For instance, SCSI disk drives, can be arranged in disk arrays (i.e., RAID array), disk mirrors, hot spares, or in other arrangements employing complex data storage techniques which provide redundant data storage and increased data reliability. Storage subsystems having a variety of disk drives generally present the disk drives or array of disk drives as a single addressable entity or logical unit (LUN) to the host computing system (i.e., servers, personal computers, work stations, or CPUs generally) to which the storage subsystem is connected. In this manner, the storage subsystem appears, from the perspective of the host computing system, as a single entity and the complex data storage techniques employed by the storage subsystem are transparent to the host computing system.
In many computing systems, multiple hosts are coupled to one or more storage devices. However, some operating systems do not gracefully share access to the same storage devices with other host operating systems. Because of this, conflicts can occur that can be devastating, such as overwrites of home blocks on previously initialized disks, reservations being taken out on disks which a host should not be reserving, improper reformatting, overwriting of files, or other conflicts.
For example, if the host computing systems do not share the same file pointers, then data corruption on the logical unit may occur due to the non-cooperative nature of the host computing systems, such as one host writing over another host""s data. In a homogeneous computing environment having a plurality of host computing systems utilizing the same operating system (i.e., NT systems, Windows systems, etc.), each host operating system may attempt to write to or control all of the logical units present in the computing system. In a heterogeneous computing environment, wherein a plurality of host computing systems utilize different operating systems in each host (i.e., NT, Sun, UNIX, or VMS operating systems), a potential for data corruption exists if all the operating systems write to and control the same logical units.
One prior approach to address this problem is to provide some intelligence at the host computing system level as to which logical units the host should control. However, this approach is problematic because the host computing system, during normal initialization, will communicate, to discover all old/new devices, with all of the logical units in the computing system, and corruption of the data stored in the logical units can still occur when the host initially communicates with the logical units.
Moreover, many operating systems have idiosyncrasies with respect to their interactions with the logical units of the storage subsystem. In particular, some operating systems, such as Windows NT, expect that the logical units have addressable numbers in a particular predefined range (i.e., 0-7). Accordingly, if multiple host operating systems require that the logical units be numbered 0-7, or have other unit addressing requirements, it may be difficult to determine which logical units are intended to be affected by a particular command from a particular host operating system. Further, such numbering requirements would limit the total number of drives presentable to the host operating system to eight.
It is with these shortcomings of the existing art in mind that the present invention was developed. What is needed is a system and method for selectively presenting the logical units to a host computing system in order that the problems associated with non-cooperative hosts are reduced, while providing unique host modes adapted to account for the idiosyncrasies of each particular host operating system. Further, multiple hosts should be capable of having their own set of unique logical units numbered 0-7.
In light of the above, therefore, in one embodiment of the present invention, disclosed herein is a storage system capable of selectively presenting logical units to one or more host computing systems. The storage system comprises one or more persistent storage devices arranged as logical units; an array controller controlling and coordinating the operations of the persistent storage devices; a memory accessible by the array controller; and a configuration table stored in the memory, the configuration table containing one or more entries governing the interactions between the logical units and the one or more host computing systems. The configuration table contains an entry for each logical unit which the array controller accesses to determine if a particular logical unit should communicate with a particular one of the host computing systems that may communicate with the array controller. The configuration table can also contain an entry for each logical unit which the array controller accesses to determine if a particular logical unit should communicate with a particular one of the host computing systems using an internal offset for a logical unit number, and an entry for each logical unit which the array controller accesses to determine if a particular logical unit should communicate with a particular one of the host computing systems using a predetermined host mode.
In this manner, the corruption of data from non-cooperative hosts can be eliminated, and LUN offsets can be employed where needed if the host operating systems require the LUN numbers to be in a particular range.
The foregoing and other features, utilities and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention as illustrated in the accompanying drawings.